#include <sys_config.h>
#include <osal/osal.h>
#include <basic_types.h>

#include <api/libc/alloc.h>
#include <api/libc/printf.h>
#include <api/libc/string.h>

#include <hld/hld_dev.h>
#include <hld/dmx/dmx_dev.h>
#include <hld/dmx/dmx.h>

#include <api/libtsi/si_types.h>
//#include <api/libtsi/si_table.h>

#include <api/libttx/lib_ttx.h>
#include <hld/hld_dev.h>
#include <hld/vbi/vbi.h>
#include <hld/vbi/vbi_dev.h>

#ifdef LIB_TSI3_FULL
#include <api/libtsi/si_section.h>
#include <api/libsi/desc_loop_parser.h>
#include <api/libsi/sie_monitor.h>
#endif

#define LIBSUBT_PRINTF 	PRINTF

#ifdef DUAL_ENABLE
#include <modules.h>

enum LIB_TTX_FUNC{
    FUNC_LIB_TTX_INIT = 0,   
    FUNC_LIB_TTX_Attach,
    FUNC_LIB_TTxOSD_SetSize,
};

#ifndef _LIB_TTX_REMOTE

void  TTXEng_Init(void);
void  TTXEng_Attach(struct ttx_config_par *pconfig_par);

UINT32 lib_ttx_entry[] = 
{
    (UINT32)TTXEng_Init,
    (UINT32)TTXEng_Attach,
    (UINT32)TTxOSD_SetSize,
};

void lib_ttx_callee(UINT8 *msg)
{
    OS_hld_callee(lib_ttx_entry, msg);
}

#endif

#ifdef _LIB_TTX_REMOTE
UINT32 desc_ttx_eng_attach[] = 
{ //desc of pointer para
  1, DESC_STATIC_STRU(0, sizeof(struct ttx_config_par)),
  1, DESC_P_PARA(0, 0, 0), 
  //desc of pointer ret
  0,                          
  0,
};

void TTXEng_Init(void)
{
    jump_to_func(NULL, OS_hld_caller, null, (LIB_TTX_MODULE<<24)|(0<<16)|FUNC_LIB_TTX_INIT, NULL);
}

void  TTXEng_Attach(struct ttx_config_par *pconfig_par)
{
    jump_to_func(NULL, OS_hld_caller, pconfig_par, (LIB_TTX_MODULE<<24)|(1<<16)|FUNC_LIB_TTX_Attach, desc_ttx_eng_attach);
}

void TTxOSD_SetSize(UINT32 width,UINT32 height)
{
    jump_to_func(NULL, OS_hld_caller, null, (LIB_TTX_MODULE<<24)|(2<<16)|FUNC_LIB_TTxOSD_SetSize, NULL);
}

#endif

#endif

